const { defineConfig } = require('@vue/cli-service')
const path = require('path')
function resolve (dir) {
  return path.join(__dirname, dir)
}

// let externals = {}
// let cdn = { css: [], js: [] }
// const isProduction = process.env.NODE_ENV === 'production' // 判断是否是生产环境
// if (isProduction) {
//   externals = {
//     // key(要排除的包名), value(引入的CDN包的全局变量名)
//     vue: 'Vue',
//     'element-ui': 'ELEMENT',
//     xlsx: 'XLSX',
//     moment: 'moment'
//   }
//   cdn = {
//     css: [
//       'https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.12/theme-chalk/index.min.css' // element-ui css 样式表
//     ],
//     js: [
//       // vue must at first!
//       'https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js', // vuejs
//       'https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.12/index.js' // element-ui js
//     ]
//   }
// }
module.exports = defineConfig({
  transpileDependencies: true,
  // webpack的一些配置
  devServer: {
    port: '8080',
    // proxy: 'http://ihrm.itheima.net/api'
    proxy: {
      '/dev-api': {
        target: 'http://localhost:8089/api',
        pathRewrite: { '^/dev-api': '' }
      },
      '/prod-api': {
        target: 'http://ihrm.itheima.net/api',
        pathRewrite: { '^/prod-api': '' }
      }
    }

  },

  configureWebpack: {
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),
        '@img': path.resolve(__dirname, 'src/assets/images')
      }
    }
    // externals
    // externals: {
    //   // key(要排除的包名), value(引入的CDN包的全局变量名)
    //   vue: 'Vue',
    //   'element-ui': 'ELEMENT',
    //   xlsx: 'XLSX',
    //   moment: 'moment'
    // }
  },
  chainWebpack (config) {
    // 尝试网上的打包分析
    if (process.env.analyzer === '1') {
      /**
       * 分析器，可以查看打包之后的效果
       * npm run build
       * 运行后会打开一个网址
       *
       */
      config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    }

    // config.plugin('preload').tap(() => [
    //   {
    //     rel: 'preload',
    //     // to ignore runtime.js
    //     // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
    //     fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
    //     include: 'initial'
    //   }
    // ])
    // // 注入cdn变量 (打包时会执行)
    // config.plugin('html').tap(args => {
    //   args[0].cdn = cdn // 配置cdn给插件
    //   return args
    // })

    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons/svg'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons/svg'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  }
})
